package stores;


import java.sql.*;

import java.util.Vector;

import models.Obra_Social;
import models.Odontologo;
import models.Paciente;
import models.*;


public class Dao_Pacientes {

	private Dao_connection unicaConeccion=Dao_connection.getInstancia();
	private Dao_ObraSocial_Paciente dbObraSocial_Paciente= new Dao_ObraSocial_Paciente();

	public boolean insertarPacienteNuevo(Paciente nuevo)
	{
		boolean validar=true;
		try{
			Connection connection = unicaConeccion.getConnection();

			String query = "INSERT INTO Paciente (Nombre,Apellido,telefono,#dni, cancelaciones) VALUES (?,?,?,?,0)";
			PreparedStatement stmt = connection.prepareStatement(query);
			stmt.setString(1,nuevo.getNombre());
			stmt.setString(2,nuevo.getApellido());
			stmt.setInt(3,nuevo.getTelefono());
			stmt.setInt(4,nuevo.getDni());
			
			stmt.execute();
			connection.close();	
			System.out.println("siglas ... " + nuevo.getObraSocial().getSigla());
			dbObraSocial_Paciente.insertarObraSocial_Paciente(nuevo.getDni(), nuevo.getObraSocial().getSigla());
		}
		catch(SQLException e){
			e.printStackTrace();
			validar = false;
		}
		catch(Exception e){
			e.printStackTrace();
			validar = false;
		}
		
		return validar;
		
	}
	
	public Vector<Paciente> buscarPacientePorNombreOApellido(String nombre,
		   String apellido) {
		   Vector<Paciente> pacientesEncontrados = new Vector<Paciente>();
		   Paciente o=null;
		   int x=0;
		   try{
			    Connection connection = unicaConeccion.getConnection();
			    Statement stmt = connection.createStatement();
			    String query1 = "SELECT * FROM Paciente where Nombre = "+"'" +nombre+ "'" + " OR Apellido = " + "'"+apellido+"'";
			    System.out.println(query1);
			    ResultSet rs = stmt.executeQuery(query1);
			    while(rs.next()){
				     String nombreP = rs.getString("Nombre");
				     String apellidoP = rs.getString("Apellido");
				     int dniP = rs.getInt("#dni");
				     System.out.println(dniP);
				     int telefonoP = rs.getInt("telefono");
				     Obra_Social os= new Obra_Social("OSDE", "asas");
				     int cancelaciones = rs.getInt("cancelaciones");
				     Paciente p = new Paciente(dniP,nombreP,apellidoP,telefonoP, os, cancelaciones); 
				     x=1;
				     pacientesEncontrados.add(p);
			    }
			    connection.close();
		   }catch (SQLException e) {
		    e.printStackTrace();
		   }catch (Exception e) {
		    e.printStackTrace();
		   }
		   if (x==0){
		    pacientesEncontrados.addElement(o);
		   }
		   System.out.println(pacientesEncontrados.elementAt(0));

		   return pacientesEncontrados;
		  }



	public Paciente buscarPacientePorDni(int dni) {
		Paciente p=null;
		Obra_Social o= new Obra_Social("OSDE", "LA");

		try {
			Connection connection = unicaConeccion.getConnection();
			Statement stmt = connection.createStatement();
			String query1 = "SELECT * FROM Paciente where #dni = " + dni;
			ResultSet rs = stmt.executeQuery(query1);
			/*String query2 = "SELECT OS.Nombre, OS.Sigla FROM Obra_Social_Paciente OSP INNER JOIN Obra_Social OS ON OSP.Sigla = OS.Sigla where OSP.#dni ="
					+ dni; */
		   //ResultSet rs2 = stmt.executeQuery(query2);
			if (rs.next()) {
				String nombre = rs.getString("Nombre");
				String apellido = rs.getString("Apellido");
				int d = rs.getInt("#dni");
				int telefono = rs.getInt("telefono");
				int cancelaciones = rs.getInt("cancelaciones");
				/*ResultSet rs2 = stmt.executeQuery(query2);
				if (rs.next()) {
					String nomOs = rs2.getString("Nombre");
					String sigla = rs2.getString("Sigla");
					o = new Obra_Social(sigla, nomOs);
				}*/

				p = new Paciente(d, nombre, apellido, telefono, o, cancelaciones);
			}

			connection.close();

		} catch (SQLException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return p;
	}



}
